#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time    : 2020/3/11 上午10:47
# @Author  : fugang_le
# @Software: PyCharm


import os
import logging
import logging.handlers

from configs.config import LOG_PATH, DEFAULT_NAME, DEFAULT_FILE_PATH

LOG_LEVEL = 'INFO'

def _set_logger(log_name, log_dir_path, file_name):
    # 提供日志功能
    # 读取日志文件保存路径
    if not os.path.exists(log_dir_path):
        os.makedirs(log_dir_path)

    # 读取日志文件容量，转换为字节
    logsize = 1024 * 1024 * 8

    # 读取日志文件保存个数
    lognum = 3

    # 日志文件名：由用例脚本的名称，结合日志保存路径，得到日志文件的绝对路径
    log_name = os.path.join(log_dir_path, file_name)

    # 初始化logger
    log = logging.getLogger(log_name)
    # 日志格式，可以根据需要设置
    fmt = logging.Formatter('[%(asctime)s][%(filename)s][line:%(lineno)d][%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S')

    # 日志输出到文件，这里用到了上面获取的日志名称，大小，保存个数
    handle1 = logging.handlers.RotatingFileHandler(log_name, maxBytes=logsize, backupCount=lognum)
    handle1.setFormatter(fmt)
    # 同时输出到屏幕，便于实施观察
    handle2 = logging.StreamHandler()
    handle2.setFormatter(fmt)
    log.addHandler(handle1)
    log.addHandler(handle2)

    # 设置日志基本，这里设置为INFO，表示只有INFO级别及以上的会打印
    log.setLevel(LOG_LEVEL)
    # propagete=0,表示输出日志，但消息不传递；propagate=1是输出日志，同时消息往更高级别的地方传递。root为最高级别。
    log.propagate = 0
    return log


logger = _set_logger(DEFAULT_NAME, LOG_PATH, DEFAULT_FILE_PATH)

